구축 환경
- Ubuntu 20.04
- PostgreSQL 13.0 이상 버전
- PHP 7.4 이상 버전
- Apache 2.4
- Zabbix 6.4
* Ubuntu 20.04 는 Vmware 에 설치 되어있음. (이부분은 각자 알아서 설치)
1. PostgreSQL 13.0 이상 버전 설치
sudo apt update
sudo apt install postgresql
sudo systemctl status postgresql // 서비스 시작 되었는지 확인
psql --version // Postgre 버전 확인
Postgre 버전이 13.0 이하 버전으로 설치됐을 경우 13 버전으로 업그레이드
// Ubuntu 20.04 기본 저장소에서는 Postgre 12 버전이 제공 됨
// PostgreSQL 공식 저장소 추가
sudo apt-get install wget ca-certificates
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main" >> /etc/apt/sources.list.d/pgdg.list'
sudo apt-get update
// 업그레이드 하기
sudo apt-get install postgresql-13
다시한번 버전확인 (필자 13.0 이하 버전으로 진행했다가 오류생겼었음)
상태도 active로 잘 출력되는지 확인!
2. PHP 7.4 이상 버전 설치
sudo apt update
sudo apt install php7.4 php7.4-fpm php7.4-pgsql php7.4-mbstring php7.4-xml php7.4-zip
php --version // 버전 확인
버전 확인해보니 잘 설치 됐습니다.
3. Apache 2.4 설치
sudo apt update
sudo apt install apache2
sudo systemctl status apache2 // 상태 확인
apache2 -v // 버전 확인
아파치도 2.4 버전에 맞게 잘 설치되었습니다.
상태도 정상적으로 Active 상태인지 확인합니다.
4. Zabbix 6.4 설치
아래 자빅스 다운로드 페이지에서 각자의 환경에 맞게 선택하면 아래쪽에 설치법이 나옴
필자의 구축 환경에 맞는 플랫폼 선택
Ubuntu Focal 버전에 Server, Frontend, Agent설치 및 PostgreSQL + Apache
데이터 베이스도 Mysql, Mariadb 사용 가능하며 WebServer 도 Nginx 사용 가능!
ChatGPT도 비슷한 답변을 해주지만 공식문서가 가장 정확하니 이곳을 참고해서 진
#1. Install Zabbix repository (레포지토리 설치)
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu20.04_all.deb
sudo dpkg -i zabbix-release_6.4-1+ubuntu20.04_all.deb
sudo apt update
잘설치됐는지 확인
zabbix.list 내용이 출력이 되지 않거나 오류 메시지가 표시된다면 재시도 or 오류 확인 후 대처
cat /etc/apt/sources.list.d/zabbix.list
#2. Install Zabbix server, frontend, agent
sudo apt install zabbix-server-pgsql zabbix-frontend-php php7.4-pgsql zabbix-apache-conf zabbix-sql-scripts zabbix-agent
Zabbix-Server 가 동작하는지 확인
// VMware Disk 용량을 10GB로 했더니 이때 쯤 공간 부족 알람이 뜸 -> 20GB로 증설 해줌 (VMware 설정에서)
sudo systemctl start zabbix-server
sudo systemctl status zabbix-server
sudo systemctl enable zabbix-server // 자동실행 설정
Active 상태 확인
#3. Create initial database
Zabbix 공식문서에는 아래 단계를 진행하라는데 role이 이미 존재한다는 오류가 뜸
sudo -u postgres createuser --pwprompt zabbix
sudo -u postgres createdb -O zabbix zabbix
createuser: error: creation of new role failed: ERROR: role "zabbix" already exists
createdb: error: database creation failed: ERROR: database "zabbix" already exists
일단 존재한다니까 넘어감
이후 초기 스키마 데이터 가져오기 + 새 비밀번호 입력 이 뜬다는데 새비밀번호 입력은 안뜸
zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql zabbix
SQL 문이 알아서 동작하면서
좀 기다리면 잘 COMMIT 되었음을 확인할 수 있다.
#4. Configure the database for Zabbix server
/etc/zabbix/zabbix_server.conf 의 내용을 수정해준다.
DBPassword=password
DB의 password 를 수정하라는데 난 아직 Postgre의 비밀번호를 설정한적이 없음
그럼 설정해주자
일단 postgresql 을 들어가 데이터 베이스 목록을 확인해보자
sudo -u postgres psql
\l //데이터 베이스 목록확인 (영문 엘)
확인해보니
목록에 zabbix 가 이미 존재한다.
그럼 데이터 베이스에 들어가서 테이블을 봐보자
\c zabbix
\dt //테이블 확인
여러 테이블이 존재하는걸 보니 아까 zcat 명령어로 설치된 스키마 데이터 인것 같다.
\d table_name 으로 테이블의 구조 확인도 가능하다.
그럼이제 비밀번호 설정을 하자
PostgreSQL 에 접속해있는 상태에서
ALTER USER zabbix WITH PASSWORD 'new_password';
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
// GRANT : 권한부여
// AllPRIVILEGES: 모든 권한
// ON DATABASES : 데이터 베이스에 대한 권한을 부여하는 대상 지정
// zabbix : 데이터 베이스 이름
// To zabbix : 권한을 부여할 대상 역할의 이름 / 여기선 zabbix 에서 권한 부여
위 명령어를 통해 zabbix Database의 비밀번호를 설정한다.
이미 zabbix 가 존재하니까 비밀번호를 바꿔주는 식이다.
\q 로 SQL 실행을 종료해준다.
그럼 이제 자빅스 설정 파일을 수정해주자
sudo nano /etc/zabbix/zabbix_server.conf
// nano를 쓰던 vi를 쓰던 자유
DBPassword=password
// 필자는 test1234로 했었음
이후 zabbix-server와 zabbix-agent와 apache2를 재시작하자
재시작을 하면 항상 status 로 상태 확인을 하자 (제대로 동작 안하고 있던적이 많아서..)
sudo systemctl restart zabbix-server zabbix-agent apache2
sudo systemctl enable zabbix-server zabbix-agent apache2
자빅스 서버 동작에서 오류가 났다.
systemctl status zabbix-server.service 또는 journalctl -xe 로 오류를 확인하자
-- The job identifier is 6636.
Jul 17 19:27:20 ubuntu systemd[1]: zabbix-server.service: Can't open PID file /run/zabbix/zab>
Jul 17 19:27:20 ubuntu systemd[1]: zabbix-server.service: Failed with result 'protocol'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit zabbix-server.service has entered the 'failed' state with result 'protocol'.
Jul 17 19:27:20 ubuntu systemd[1]: Failed to start Zabbix Server.
-- Subject: A start job for unit zabbix-server.service has failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- A start job for unit zabbix-server.service has finished with a failure.
--
-- The job identifier is 6636 and the job result is failed.
Jul 17 19:27:20 ubuntu polkitd(authority=local)[808]: Unregistered Authentication Agent for u>
PID 파일과 Protocol 때문에 zabbix-server를 동작하지 못한다고 한다.
근데 PID 파일은 /run/zabbix 경로로 잘 있고 소유자와 퍼미션 또한 zabbix, 755로 적당하게 잘 돼있다.
그럼 다음 오류로 Failed with result protoocl을 보자
방화벽 포트 10051이 잘열려있는지 확인하자
sudo ufw status
필자는 Status: inactive 라는 결과를 얻었다.
방화벽이 사용되지 않고 모든 연결이 허용되기 때문에 상관 없다.
그럼 다음으로 /var/log/zabbix/zabbix_server.log를 보자
자빅스 서버에 대한 로그가 들어있다.
2723:20230717:211102.215 TLS support: YES
2723:20230717:211102.215 ******************************
2723:20230717:211102.215 using configuration file: /etc/zabbix/zabbix_server.conf
2723:20230717:211102.235
2723:20230717:211102.235 Unable to start Zabbix server due to unsupported PostgreSQL database version (12.15).
2723:20230717:211102.235 Must be at least (13.0).
2723:20230717:211102.235 Use of supported database version is highly recommended.
2723:20230717:211102.235 Override by setting AllowUnsupportedDBVersions=1 in Zabbix server configuration file at your own risk.
2723:20230717:211102.235
2723:20230717:211102.247 Zabbix Server stopped. Zabbix 6.4.4 (revision a749236b3d9).
Postgre 버전을 13.0 이상 버전을 사용하라고 한다.
처음에 업그레이드 까지해서 확인했었는데 이유를 모르겠다.
postgreSQL의 12 버전이 13버전과 같이 깔려있어 오류가 난것 같아 12버전을 지웠보았다.
sudo apt remove postgresql-12
지우고 zabbix server 재실행 해보니 정상동작 확인되었다.
이후 ifconfig 를 통해 확인된 서버의 ip를 토대로 브라우저에 ip/zabbix 주소를 입력한다.
드디어 Zabbix 대시보드 확인
(그 전에 CentOS7 에 Zabbix Server 설치해보려고 했는데 DB Script 에서 계속 오류나서 Zabbix 6.4에서 제공하는 OS 로 재설치 진행함)
언어 설정하고
요구사항들 체크에서 전부 OK 뜨는것 확인하고
이제 DB Connection 구성에서 비밀번호 입력하고 나머지는 Default 값으로 넘어가려는데
연결할 수 없다는 오류가 났다.
체크 사항
1. 데이터 베이스 상태 확인 -> Active 잘 돼있음
상태 확인하고 재시작하자
sudo systemctl status postgresql
sudo systemctl start postgresql
2. 방화벽 규칙 -> 다열어놨음
3. 데이터베이스 로그 확인
/var/log/zabbix/zabbix_server.log 확인해보니
아래와 같은 오류가 났다.
=> 데이터베이스에 연결할 수 없으며 Connection refused 오류가 났고
데이터베이스 서버가 실행 중이지 않거나 호스트에서 TCP/IP 연결을 수학하지 않은 것을 의미한다.
9014:20230717:213508.171 database is down: reconnecting in 10 seconds
9014:20230717:213518.172 [Z3001] connection to database 'zabbix' failed: [0] connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused
Is the server running on that host and accepting TCP/IP connections?
9014:20230717:213518.172 database is down: reconnecting in 10 seconds
9014:20230717:213528.173 [Z3001] connection to database 'zabbix' failed: [0] connection to server at "localhost" (127.0.0.1), port 5432 failed: Connection refused
Is the server running on that host and accepting TCP/IP connections?
9014:20230717:213528.173 database is down: reconnecting in 10 seconds
pg_hba.conf 에서
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
이러한 설정이 잘 되어있따면 인증 규칙도 잘 되어있는 것이다. (localhost 에서 연결이 허용 되는지 확인)
4. 포트확인
=> /etc/postgresql/13/main/postgresql.conf 에 port 도 5433 으로 되어있어 브라우저에서 값 입력해보고 했는데 안됨
오류를 찾은것 같다.
postgresql 의 테이블 목록을 확인해보니 zabbix 가 사라졌다.
아까 12버전에다가 등록을 해놔서 삭제할때 같이 지워진것같다.
Create initial database 단계를 다시 진행했다.
오류 해결!!
서버 이름 지정해주고 time zone 지
이제 서버 접속하자
Admin / zabbix 가 기본 아이디 비밀번호이다.
접속이 완료되었으니 이제 다른 서버에 Zabbix Agent를 설치하여 Server와 연결해보자
'모니터링 > Zabbix' 카테고리의 다른 글
CRC32, MD5, SHA-256 란? (vfs.file.cksum mode 종류) (0) | 2023.07.14 |
---|