1. 程式人生 > >大作業之zabbix

大作業之zabbix

.sql libevent -c inpu hash openipmi sqli web頁面 har

1、二進制安裝JDK(1.8):用於java-geteway
上傳JDK到/usr/local/src/目錄下,解壓:

[root@localhost src]# tar zxf jdk-8u181-linux-x64.tar.gz
[root@localhost src]# mv jdk1.8.0_181/ /usr/local/jdk1.8

2、添加環境變量

[root@localhost src]# vim /etc/profile                  #在最後面添加以下內容
JAVA_HOME=/usr/local/jdk1.8/
JAVA_BIN=/usr/local/jdk1.8/bin
JRE_HOME=/usr/local/jdk1.8/jre
PATH=$PATH:/usr/local/jdk1.8/bin:/usr/local/jdk1.8/jre/bin
CLASSPATH=/usr/local/jdk1.8/jre/lib:/usr/local/jdk1.8/lib:/usr/local/jdk1.8/jre/lib/charsets.jar

[root@localhost src]# source /etc/profile   # 使配置文件立即生效

3、驗證環境變量是否生效

[root@localhost src]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

源碼安裝LNMP環境
參考:http://blog.51cto.com/13736286/2135537 需要註意的是php的編譯參數有點不同,使用如下的php編譯參數安裝php

./configure --prefix=/usr/local/php-fpm --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config --with-pdo-mysql=/usr/local/mysql --with-mysql-sock=/tmp/mysql.sock --enable-mysqlnd --with-freetype-dir --with-jpeg-dir --with-png-dir --with-zlib --with-libxml-dir=/usr --with-ldap --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --with-curl --enable-mbregex --enable-fpm --enable-mbstring --with-mcrypt --with-gd --with-gettext --enable-gd-native-ttf --with-openssl --with-mhash --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --enable-short-tags --enable-static --with-xsl --with-fpm-user=php-fpm --with-fpm-group=php-fpm --enable-opcache=no  --enable-ftp

如果出現以下錯誤:

configure: error: Cannot find ldap.h
安裝 :
yum install -y openldap
yum install -y openldap-devel

configure: error: Cannot find ldap libraries in /usr/lib
解決辦法:
cp -frp /usr/lib64/libldap* /usr/lib/

編譯:

make&& make install

如果編譯過程出現如下錯誤:

/usr/bin/ld: ext/ldap/ldap.o: undefined reference to symbol ‘ber_scanf‘
//usr/lib64/liblber-2.4.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make: *** [sapi/cli/php] 錯誤 1
解決辦法:
編輯MakeFile
找到 開頭是 ‘EXTRA_LIBS = ‘ 這一行 在結尾加上 ‘-llber‘ 然後再執行 make && make install

編譯完成後編輯php.ini修改如下參數的值:

max_execution_time=300
memory_limit=128M
post_max_size=16M
upload_max_filesize=2M
max_input_time=300
date.timezone=Asia/Shanghai
always_populate_raw_post_data = -1

4、源碼安裝zabbix
依賴包

yum install -y net-snmp net-snmp-devel fping unixODBC-devel openssl-devel OpenIPMI-devel libevent libevent-devel pcre-devel

創建zabbix用戶,下載zabbix源碼包並安裝

[root@localhost src]# useradd zabbix -s /sbin/nologin
[root@localhost src]# wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.4.12/zabbix-3.4.12.tar.gz
[root@localhost src]# tar zxf zabbix-3.4.12.tar.gz
[root@localhost src]# cd zabbix-3.4.12
[root@localhost zabbix-3.4.12]# ./configure --prefix=/usr/local/zabbix-3.4.2 --enable-server --enable-agent --enable-java --with-mysql=/usr/local/mysql/bin/mysql_config --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi --with-unixodbc --with-openssl
[root@localhost zabbix-3.4.12]# make && make install

mysql中創建zabbix庫,並授權用戶

mysql> create database zabbix character set utf8;
mysql> grant all privileges on zabbix.* to ‘zabbix‘@‘localhost‘ identified by ‘zabbix‘;

導入zabbix源碼包中的數據到mysql,源碼包在/usr/local/src下

[root@localhost ~]# cd /usr/local/src/zabbix-3.4.12/database/mysql/
[root@localhost mysql]# ll
總用量 4876
-rw-r--r-- 1 mysql mysql 2877497 7月  30 19:41 data.sql
-rw-r--r-- 1 mysql mysql 1978341 7月  30 19:41 images.sql
-rw-r--r-- 1 mysql mysql  134791 7月  30 19:41 schema.sql
[root@localhost mysq]# mysql -uzabbix -p<password> zabbix < schema.sql
[root@localhost mysq]# mysql -uzabbix -p<password> zabbix < images.sql
[root@localhost mysq]# mysql -uzabbix -p<password> zabbix < data.sql

拷貝源碼包的啟動腳本到/etc/init.d

[root@localhost mysql]# cd /usr/local/src/zabbix-3.4.12/misc/init.d/fedora/core
[root@localhost core]# cp zabbix_* /etc/init.d/
[root@localhost core]# ln -s /usr/local/zabbix/etc/ /etc/zabbix    #把配置文件鏈接到/etc下

修改啟動腳本

]# sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix-3.4.2/#g" /etc/init.d/zabbix_server 
]# sed -i "s#BASEDIR=/usr/local#BASEDIR=/usr/local/zabbix-3.4.2/#g" /etc/init.d/zabbix_agentd

修改zabbix服務端配置文件

[root@localhost core]# vi /etc/zabbix/zabbix_server.conf  #修改如下內容
LogFile=/tmp/zabbix_server.log
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=<password>       #數據庫中zabbix用戶的密碼
DBSocket=/data/mysql/mysql.sock
Timeout=4
LogSlowQueries=3000

修改zabbix客戶端配置文件

[root@localhost core]# vi /etc/zabbix/zabbix_agentd.conf
LogFile=/tmp/zabbix_agentd.log
Server=127.0.0.1            # 被動模式中服務端或代理端的IP地址
ServerActive=127.0.0.1      # 主動模式中服務端或代理端的IP地址
Hostname=zabbix             # 當前客戶端所在服務器的主機名;

復制源碼包中zabbix站點web文件到nginx站點目錄

cp -a /usr/local/src/zabbix-3.4.2/frontends/php/* /usr/local/nginx/html/

啟動zabbix服務

/etc/init.d/zabbix_server start
/etc/init.d/zabbix_agentd start

訪問zabbix頁面,綁定windows的host,輸入域名
技術分享圖片
下一步,
技術分享圖片
如果有出現fail的情況,修改php.ini裏參數改成對應的值即可
配置完數據庫信息後,一直下一步即可
技術分享圖片
如果出現Unable to create the configuration file.
解決方法:
設置 web服務器用戶在zabbix網頁的conf/目錄具有寫權限,配置文件會自動保存。
至此,zabbix源碼安裝完成
1、zabbix配置中文語言
登陸zabbix網頁,默認,用戶名admin,密碼zabbix,點擊administrator-user,點擊admin用戶,修改密碼,Language選擇chinese把 語言修改成中文,然後更新,保存,退出重新登陸即可
2、圖形界面中文亂碼解決,修改zabbix網頁文件的 fonts目錄下的字體文件

]# yum install wqy-microhei-fonts -y
]# cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/local/nginx/html/fonts/DejaVuSans.ttf
或者把windows系統裏的楷體常規上傳到服務器上:C:\Windows\Fonts\simkai.ttf
]# cd /usr/local/nginx/html/fonts
]# rz simkai.ttf
]# mv DejaVuSans.ttf DejaVuSans.ttf.bak
]# mv simkai.ttf DejaVuSans.ttf

3、創建自動發現規則,發出網絡上的主機並監控
點擊配置-自動發現-創建發現規則
技術分享圖片

4、所有監控主機都需要安裝zabbix-agent,編輯zabbix_agent.conf文件,修改如下內容

Server=192.168.118:109定義被動模式的server端
ServerActive=192.168.118.109定義主動模式的server端

5、添加監控項目
需求1,
監控各個主機基礎指標,CPU,內存,硬盤,網卡流量成圖,web站點的可用性
創建模板,

創建方式:鏈接 OS Linux模板 然後取消鏈接,刪除多余的監控項
模板名 Template_Base 模板應用到的所有主機
監控項保留下面這幾個CPU內存相關的監控項,其余的都可以刪除掉,沒有監控項的應用集也可以刪除
Agent ping CPU user time Number of processes Number of running processes Processor load (1 min average per core) Total memory 

自動發現網卡和硬盤

把兩個自動發現的更新時間修改為 30s 當圖形中有了自動發現的圖形後可以改回30m 或者1h
這兩個自動發現會自動創建 網卡流量 和 硬盤狀態 的圖形

檢測web站點的可用性

在zbx-server中寫入一條 hosts:
echo ‘192.168.118.109 bbs.yuankeedu.com blog.yuankeedu.com‘ >> /etc/hosts
在zabbix的web頁面選擇 配置 -- 主機 -- zbx-server -- web監測 -- 右上角創建web場景
場景選項卡中填寫
名稱:web可用性檢測
新的應用集: web_check
客戶端:隨意選擇一個,就是模擬什麽瀏覽器訪問監測的站點
步驟選項卡填寫:
點擊步驟框中的添加添加一個步驟, 填寫一個自定義的步驟名稱 填寫要檢測的站點的URL: http://www.yuankeedu.com 填寫最下面的狀態碼 200 點擊最下邊的添加按鈕完成步驟的添加
點擊添加按鈕完成web場景的添加
再按照前面的步驟將其他兩個web站點也添加上
添加完成過幾十秒就可以在 監測中 -- web檢測 中查看狀態了

自定義監控項(監控80端口連接數)
需要到客戶端定義腳本:

$ sudo vim /usr/local/sbin/estab.sh 
//內容如下
#!/bin/bash
##獲取80端口並發連接數
netstat -ant |grep ‘:80 ‘ |grep -c ESTABLISHED
給腳本授權:
$ sudo chmod 755 /usr/local/sbin/estab.sh
修改配置文件
$ sudo vim /etc/zabbix/zabbix_agentd.conf
//增加
UnsafeUserParameters=1  //表示使用自定義腳本
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 

//自定義監控項的key為my.estab.count(也就是在監控項中需要填寫的鍵值),後面的[*]裏面寫腳本的參數,如果沒有參數則可以省略,如果有需要用逗號分隔,腳本為/usr/local/sbin/estab.sh
重啟客戶端的zabbix服務:

$ sudo systemctl restart zabbix-agent

到服務端驗證,執行命令:

zabbix_get -s 192.168.14.103 -p 10050 -k ‘my.estab.count‘
0

-s:源地址
-p: 端口
-k: 鍵值

如上顯示0即為沒有任何連接。
進入zabbix服務器的web頁面,給每一臺web主機創建監控項和圖形
然後創建觸發器:

名稱:web1:並發連接數
嚴重性:警告
表達式:{web1:my.estab.count.last(,30)}>100
點擊最下邊的添加按鈕完成觸發器的添加
再將這個觸發器復制到其他web主機,修改一下名稱

自定義監控項:檢測Mysql隊列,超過300報警(mysql主機)
在客戶端開啟自定義監控腳本。修改客戶端的配置文件zabbix_agent.conf,加入過修改以下內容:

UnsafeUserParameters=1
UserParameter=process.count[*],/usr/local/sbin/process_count.sh

腳本

#!/bin/bash
# script name: process_count.sh
export  MYSQL_PWD=123456           #這裏可以先定義密碼,下面的命令就可以省略-p
process_count=`mysql -uroot  -e "SHOW FULL PROCESSLIST;" |wc -l`
echo $process_count

修改腳本權限,並重啟zabbix-agent

sudo chmod 755 /usr/local/sbin/process_count.sh
systemctl restart zabbix-agent

進入zabbix網頁,配置-主機-監控項-創建監控項
鍵值填process.count[*],就是上面自定義的鍵值,然後再為該項目創建觸發項

自定義監控項:mysql慢查詢日誌,查詢日誌超過60條/分鐘告警

修改/etc/my.cn 配置文件 加入以下內容, 開啟慢查詢日誌 slow_query_log = ON slow_query_log_file = /data/mysql/slow.log long_query_time = 2 # 查詢超過2秒就記錄慢查詢日誌 3.重啟MySQL服務 service mysqld restart

先修改zabbix-agent.conf,添加以下字段

UnsafeUserParameters=1                 #表示使用自定義腳本                 
UserParameter=slow.query.count[*],/usr/local/sbin/slow_query_count.sh     #定義鍵值和腳本存放路徑

創建慢查詢統計腳本sudo vim /usr/local/sbin/slow_query_count.sh

#!/bin/bash
# script name: slow_query_count.sh
slow_log=/data/mysql/dbm-slow.log
grep ‘timestamp‘ $slow_log | awk -F ‘=‘ ‘{print $2}‘ |awk -F ‘;‘ ‘{print $1}‘|sort -r > /tmp/timestamp.log
now=`sed -n ‘1‘p /tmp/timestamp.log`
alert_num=60
one_min_ago=$[$now-60]
num=0
##### 判斷兩個時間戳之前的差值
slow_query_sum() {
    if [ $1 -ge $2 ]
    then
        num=$[$num+1]
    else
    break
    fi
}
##### 獲取在一分鐘內的慢查詢數

for n in `cat /tmp/timestamp.log`
do
    slow_query_sum $n $one_min_ago
done
##### 刪除臨時文件
rm -f /tmp/timestamp.log
# There are $num slow query in a minute.
echo $num

修改腳本權限,並重啟zabbix-agent

sudo chmod 755 /usr/local/sbin/slow_query_count.sh
systemctl restart zabbix-agent

同上,然後在zabbix網頁上添加自定義監控項,和觸發器
zabbix使用jmx監控tomcat
前提:編譯zabbix server時需要提供java支持,即添加--enable-java該選項。
1、zabbix server段配置java支持。此處編譯安裝zabbix的目錄為/usr/local/zabbix-3.4.2。

[root@localhost fonts]# vi /usr/local/zabbix-3.4.2/sbin/zabbix_java/settings.sh   #修改如下字段的值
 LISTEN_IP="0.0.0.0"            //監聽的服務器地址
 LISTEN_PORT=10052            //監聽的端口
 PID_FILE="/tmp/zabbix_java.pid"    //指定zabbix_java的pid文件地址
 START_POLLERS=5
TIMEOUT=3

2、編輯/usr/local/zabbix/etc/zabbix_server.conf,修改完成之後,內容如下:

LogFile=/tmp/zabbix_server.log    //指明zabbix_server的日誌文件地址
DBHost=localhost                //連接的數據庫地址
DBName=zabbix                //連接的數據庫名稱
DBUser=zabbix                //連接數據庫的用戶名
DBPassword=zabbix            //連接數據庫密碼
JavaGateway=192.168.118.109        //java網關地址,即server端ip地址
JavaGatewayPort=10052            //java網關監聽端口
Timeout=20                    //超時時間
FpingLocation=/usr/sbin/fping    //fping命令絕對地址
LogSlowQueries=3000
AllowRoot=1                    //允許root啟動
User=root                    //zabbix服務的啟動用戶
StartPollers=50
StartPingers=100
StartJavaPollers=5
AlertScriptsPath=/usr/local/zabbix/share/zabbix/alertscripts    //zabbix額外的腳本地址

3、重啟zabbix server服務,以及啟動zabbix java支持服務。

/etc/init.d/zabbix_server restart
cd /usr/local/zabbix-3.4.2/sbin/zabbix_java && sh startup.sh

4、在zabbix agent部署的服務器上更改配置文件,修改tomcat配置文件。我的tomcat目錄:/usr/local/tomcat/bin。

vi /usr/local/tomcat/bin/catalina.sh        #在開頭添加如下內容,註意要加在第二行
CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=12345 -Djava.rmi.server.hostname=192.168.118.110"

其中,hostname=192.168.118.110需要修改為agent部署的服務器地址。更改完成需要重啟tomcat應用服務器,同時查看端口12345是否處於監聽狀態。
[root@localhost fonts]# netstat -lnp|grep 12345
tcp6       0      0 :::12345                :::*                    LISTEN      13453/java 

5、在zabbix agent部署的tomcat服務器上,下載對應的java jmx監控的相關jar包並復制到tomcat對應的目錄下。

wget http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.32/bin/extras/catalina-jmx-remote.jar   #我的tomcat是8.5.32
cp catalina-jmx-remote.jar /usr/local/tomcat/lib/

6、在zabbix網頁界面添加相應模板即可

大作業之zabbix