Рубрики
syslog \ rsyslog \ zabbix

zabbix 7.0 install

Ссылки:

https://www.zabbix.com/download?zabbix=7.0&os_distribution=debian&os_version=12&components=server_frontend_agent&db=mysql&ws=apache

install

0. Качаем и ставим пакет:
wget https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb
dpkg -i zabbix-release_latest_7.0+debian12_all.deb
apt update

1. Ставим пакеты:
apt install zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent

2. Создаем базу:
mysql -uroot -p
---------------
create database zabbix character set utf8mb4 collate utf8mb4_bin;
create user zabbix@localhost identified by 'password';
grant all privileges on zabbix.* to zabbix@localhost;
set global log_bin_trust_function_creators = 1;
quit;
----------------


3. Заливаем базу zabbix:
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix

4. Отключите опцию log_bin_trust_function_creators после импорта схемы базы данных.
mysql -uroot -p
---------------
set global log_bin_trust_function_creators = 0;
quit;
---------------


5. Редактируем конфиг и пароль для базы:
vim /etc/zabbix/zabbix_server.conf
----------------------------------
DBPassword=password
----------------------------------

6. Запускаем zabbix 
systemctl restart zabbix-server zabbix-agent apache2
systemctl enable zabbix-server zabbix-agent apache2

Пример ansible book

mkdir prod 
cd prod

cat > install_zabbix_7.yaml << "EOF"
---
- name: Install Zabbix vesrion 7 on server Debian 12
  hosts: all
  become: yes
  vars:
     mysql_root_password: "password"
     ansible_fqdn: zabbix
     destin_file_cnf: /root/.my.cnf
     source_file_cnf: ./my.cnf
     zabbix_user: "zabbix"
     zabbix_password: "zabbix"
     zabbix_db: "zabbix"
     zabbix_host: "localhost"
     zabbix_priv: "{{ zabbix_db }}.*:ALL"
     destin_conf: /usr/share/zabbix/conf/zabbix.conf.php
     source_conf: ./zabbix.conf.php        

  tasks:
  - name: Update apt repo and cache on all Debian/Ubuntu boxes
    apt: update_cache=yes force_apt_get=yes cache_valid_time=3600

  - name: Upgrade all packages on servers
    apt: upgrade=dist force_apt_get=yes

  - name: Install a .deb package from the internet
    apt:
      deb: https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest_7.0+debian12_all.deb 

  - name: Run the equivalent of "apt-get update" as a separate step
    apt:
      update_cache: yes
      cache_valid_time: 3600  

  - name: Install a list of packages
    apt:
      pkg:
        - zabbix-server-mysql
        - zabbix-frontend-php
        - zabbix-apache-conf
        - zabbix-agent
        - mariadb-server
        - python3-apt
        - python3 
        - python3-pip 
        - python3-setuptools
        - python3-pymysql 
        - zabbix-agent  
        - zabbix-sql-scripts
      state: latest
      update_cache: True    

  - name: Copy file cnf to Servers
    copy: src={{ source_file_cnf }} dest={{ destin_file_cnf }} mode=0600 owner=root group=root backup=yes 

  - name: Edit line password
    lineinfile:
      path: /root/.my.cnf
      state: present
      regexp: '^password='
      line: 'password="{{ mysql_root_password }}"'


  - name: Remove the test database
    mysql_db:
      login_unix_socket: /var/run/mysqld/mysqld.sock
      name: test
      state: absent

  - name: Remove anonymous user
    mysql_user:
      login_unix_socket: /var/run/mysqld/mysqld.sock
      name: ''
      state: absent
  
  - name: Sets the root password 
    mysql_user:
       login_unix_socket: /var/run/mysqld/mysqld.sock
       user: root 
       password: "{{ mysql_root_password }}" 
       host: localhost  

  - name: "Create new databases with names {{ zabbix_user }}"
    mysql_db:
      login_unix_socket: /var/run/mysqld/mysqld.sock
      name: "{{ zabbix_user }}"
      encoding: utf8
      collation: utf8_bin
      state: present
  
  - name: "Add user and add  privilege for {{ zabbix_db }}"
    mysql_user:
      login_unix_socket: /var/run/mysqld/mysqld.sock
      login_host: "localhost"
      name: "{{ zabbix_db }}"
      password: "{{ zabbix_password }}"
      host: "localhost"
      priv: "{{ zabbix_priv }}"
      state: present
      append_privs: yes

 
  - name: Importing databases
    mysql_db:
      name: "{{ zabbix_db }}"
      login_user: "{{zabbix_user}}"
      login_host: localhost
      login_password: "{{ zabbix_password }}"
      config_file: no
      state: import
      encoding: utf8
      collation: utf8_bin
      target: "/usr/share/zabbix-sql-scripts/mysql/server.sql.gz"
               

  - name: Edit line db_password for zabbix-server
    lineinfile:
      path: /etc/zabbix/zabbix_server.conf
      state: present
      regexp: '^DBPassword='
      line: 'DBPassword={{ zabbix_password }}'

  - name: Edit line time zone
    lineinfile:
      path: /etc/zabbix/apache.conf
      state: present
      regexp: '^php_value date.timezone Europe/Riga'
      line: 'php_value date.timezone Europe/Moscow'

  - name: Copy file conf php to server zabbix
    copy: src={{ source_conf }} dest={{ destin_conf }} mode=0644 owner=root group=root backup=yes 

  - name: Service zabbix restart and add autostart
    shell: systemctl restart zabbix-server zabbix-agent apache2 &&  systemctl enable zabbix-server zabbix-agent apache2   


...

EOF

cat > my.cnf << "EOF"
[client]
user="root"
password=mysql_root_password
EOF


cat > hosts.txt << "EOF"
localhost ansible_connection=local
EOF


cat > ansible.cfg << "EOF"
[defaults]
#interpreter_python = /usr/bin/python3
host_key_cheking = false
allow_world_readable_tmpfiles= true #bug mysql import
inventory      = ./hosts.txt
forks          = 10
timeout = 10
log_path = ./ansible.log
pipelining = True
EOF


cat > zabbix.conf.php << "EOF"
 'http://localhost:9200',
//	'text' => 'http://localhost:9200'
//];
// Value types stored in Elasticsearch.
//$HISTORY['types'] = ['uint', 'text'];

// Used for SAML authentication.
// Uncomment to override the default paths to SP private key, SP and IdP X.509 certificates, and to set extra settings.
//$SSO['SP_KEY']			= 'conf/certs/sp.key';
//$SSO['SP_CERT']			= 'conf/certs/sp.crt';
//$SSO['IDP_CERT']		= 'conf/certs/idp.crt';
//$SSO['SETTINGS']		= [];
EOF


Объяснение плейбука:
Скачивание и установка пакета Zabbix: Используется модуль apt для установки пакета.
Обновление списка пакетов: Обновляет кэш пакетов.
Установка необходимых пакетов Zabbix: Устанавливает все необходимые пакеты.
Создание базы данных Zabbix: Использует модуль mysql_db для создания базы данных.
Создание пользователя Zabbix: Использует модуль mysql_user для создания пользователя и предоставления ему прав.
Установка параметра log_bin_trust_function_creators: Устанавливает переменную MySQL.
Импорт схемы базы данных Zabbix: Выполняет команду для импорта схемы.
Отключение опции log_bin_trust_function_creators: Устанавливает переменную обратно.
Редактирование конфигурационного файла Zabbix: Использует модуль lineinfile для изменения конфигурации.
Перезапуск Zabbix: Перезапускает службы Zabbix и Apache.


Запуск плейбука:
!!! отредактируй строку в пдлейбуке "hosts: your_target_hosts  # Replace with your target host group"
!!! например: hosts: all или укажи конкретный хост hosts: you_host
ansible-playbook install_zabbix_7.yaml
a2enmod ssl