页面“Zabbix 5 4 and 3 LTS安装入门教程”与“Awk skill”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
==站内资源==
+
=awk 打印最后一列=
[[Zabbix 调用API 批量添加主机]]
 
== zabbix server ==
 
===pre ===
 
这些是官网官方安装文档,记得一定要看
 
 
 
https://www.zabbix.com/documentation/3.0/manual/installation/install
 
 
 
https://www.zabbix.org/wiki/InstallOnCentOS_RHEL
 
 
 
<pre>wget -c https://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/3.0.8/zabbix-3.0.8.tar.gz
 
wget -c http://tenet.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.2.13/zabbix-2.2.13.tar.gz</pre>
 
 
 
===#配置php变量===
 
<pre>vi /etc/php.ini
 
date.timezone = Asia/Shanghai
 
post_max_size = 32M
 
max_execution_time = 300
 
max_input_time = 300
 
注:更改完之后需要重启nginx和php</pre>
 
 
 
===#安装zabbix所需的组件 ===
 
<pre>yum -y install net-snmp-devel curl-devel
 
#yum -y install curl curl-devel net-snmp net-snmp-devel perl-DBI php-gd php-xml php-bcmath
 
groupadd zabbix && useradd -g zabbix zabbix
 
tar xvf zabbix-3.0.8.tar.gz && cd zabbix-3.0.8
 
#tar xvf zabbix-2.2.13.tar.gz && cd zabbix-2.2.13
 
 
 
#./configure –enable-server –enable-agent –with-mysql –enable-ipv6 –with-net-snmp –with-libcurl –with-libxml2
 
 
 
##或者默认安装路径 make是不用的
 
./configure --sysconfdir=/etc/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2 && make install
 
</pre>
 
===添加zabbix服务对应的端口(可以省略,但是官方建议有)===
 
<pre>cat >>/etc/services<< EOF
 
zabbix-agent 10050/tcp #Zabbix Agent
 
zabbix-agent 10050/udp #Zabbix Agent
 
zabbix-trapper 10051/tcp #Zabbix Trapper
 
zabbix-trapper 10051/udp #Zabbix Trapper
 
EOF</pre>
 
 
 
===配置文件===
 
<pre>##好像是这个起效果的呢 –sysconfdir=/etc/zabbix 有这个,不用下面的命令了
 
#vim /usr/local/etc/zabbix_server.conf
 
#cd zabbix-2.0.7
 
 
 
#mkdir /etc/zabbix
 
#cp conf/*.conf /etc/zabbix
 
 
 
mkdir /var/log/zabbix ;chown zabbix:zabbix /var/log/zabbix;
 
 
 
 
 
#zabbix web代码
 
mkdir -p /data/www/zabbix;
 
cp -r frontends/php/* /data/www/zabbix
 
 
 
修改zabbix连接的数据库的用户名和密码
 
vi /etc/zabbix/zabbix_server.conf
 
 
 
DBHost=127.0.0.1
 
DBName=zabbix
 
DBUser=zabbix
 
DBPassword='123'
 
DBPort=3306 #如果数据库是用sock文件的方式,这里可以是sock文件的路径
 
 
 
添加数据库Lib文件位置到/etc/ld.so.conf中,并使其生效
 
echo ‘/usr/local/mysql/lib/mysql/’ >> /etc/ld.so.conf
 
 
 
ldconfig
 
 
 
为zabbix的启动、关闭和重启的脚本文件做链接,方便系统可以找得到
 
 
 
给zabbix服务端程序做软链接 我用默认的config 应该是不用的
 
cd /usr/local/zabbix/bin/
 
for i in *;do ln -s /usr/local/zabbix/bin/${i} /usr/bin/${i};done
 
cd /usr/local/zabbix/sbin/
 
for i in *;do ln -s /usr/local/zabbix/sbin/${i} /usr/sbin/${i};done
 
 
 
拷贝zabbix服务端和客户端启动脚本到/etc/init.d目录下.
 
cd misc/init.d/
 
cp fedora/core/zabbix_server /etc/init.d/
 
cp fedora/core/zabbix_agentd /etc/init.d/
 
chmod +x /etc/init.d/zabbix_agentd
 
chmod +x /etc/init.d/zabbix_server</pre>
 
 
 
===3 Create Zabbix database===
 
<pre>SQL scripts are provided for creating database schema and inserting the dataset
 
#https://www.zabbix.com/documentation/3.0/manual/appendix/install/db_scripts
 
#https://www.zabbix.com/documentation/2.2/manual/appendix/install/db_scripts
 
 
 
mysql>create database zabbix character set utf8 collate utf8_bin;;grant all on zabbix.* to zabbix@localhost identified by '123';flush privileges;
 
 
 
将zabbix源码包中的数据导入到新建的zabbix数据库
 
##这个和老的版本有点不同 第一个是zabbix的数据库表结构,要先导入。
 
 
 
. /etc/profile
 
cd ../..
 
mysql -uroot -p'evan' zabbix< database/mysql/schema.sql
 
mysql -uroot -p'evan' zabbix< database/mysql/images.sql
 
mysql -uroot -p'evan' zabbix< database/mysql/data.sql
 
 
 
vi /etc/init.d/zabbix_server # 的可以不改,修改一下变量的值 因为我是默认用 configure
 
# base zabbix dir
 
BASEDIR=/usr/local
 
# binary file
 
ZABBIX_SUCKERD=$BASEDIR/sbin/zabbix_server<pre>
 
 
 
===fping的安装和使用详解===
 
<pre>http://rickie622.blog.163.com/blog/static/2123881120121121111720941/
 
http://netsecurity.51cto.com/art/201101/242200.htm
 
#当然 下载zip包也是可以的
 
git clone https://github.com/schweikert/fping.git
 
cd fping
 
./autogen.sh
 
./configure
 
make -j2 && make install
 
 
 
#修改一下配置文件
 
vim /etc/zabbix_server.conf
 
#vim /usr/local/etc/zabbix_server.conf
 
FpingLocation=/usr/local/sbin/fping</pre>
 
 
 
===启动zabbix,并且添加开机自启动===
 
<pre>service zabbix_server start
 
service zabbix_agentd start #启动服务
 
 
 
chkconfig zabbix_server on
 
chkconfig zabbix_agentd on #开机自启动
 
 
 
在Nginx服务中添加zabbix虚拟主机
 
#vim /usr/local/nginx/conf/vhosts/monitor.conf
 
 
 
这些都不要,不然没有web安装向导的
 
#cd zabbix/conf
 
#cp zabbix.conf.php.example zabbix.conf.php ;
 
#chmod 777 zabbix.conf.php
 
 
 
iptables -I INPUT -p tcp –dport 80 -j ACCEPT
 
 
 
zabbix server is not running
 
Zabbix Server is not running: the information displayed may not be current
 
http://song49.blog.51cto.com/4480450/1200151</pre>
 
 
 
===(4)设置zabbix服务IP和端口,name可以忽略===
 
 
<pre>
 
<pre>
ps:
+
容易混淆的两个变量:NF和$NF两个变量
post_max_size = 16M
+
NF是处理行中域的个数
PHP option “max_execution_time” 30 300 Fail
+
$NF 是输出处理行中最后一个域的内容
PHP option “max_input_time” 60 300 Fail
+
$1 处理行中第一个域的内容 ,依此类推
PHP option “date.timezone” unknown Fai
 
date.timezone = Asia/Shanghai
 
 
 
PHP option “always_populate_raw_post_data” must be set to “-1”
 
 
 
port 10051
 
  
Zabbix frontend is ready! The default user name is Admin, password zabbix.</pre>
+
sudo netstat  -nlpt
===超级用户密码修改 ===
 
<pre>
 
2.2 用户名第一个字母要大写 也就是Admin
 
默认的用户名:admin 密码:zabbix
 
  
哪里改登录用户和密码呢
+
Proto Recv-Q Send-Q Local Address          Foreign Address        State      PID/Program name   
use zabbix;
+
tcp        0      0 127.0.0.1:3306          0.0.0.0:*              LISTEN      939/mysqld         
select userid,alias,passwd from users; #查看
 
  
+--------+------------+----------------------------------+
+
tcp        0      0 0.0.0.0:22              0.0.0.0:*              LISTEN     741/sshd           
| userid | alias     | passwd                          |
+
tcp        0     0 127.0.0.1:7070          0.0.0.0:*              LISTEN     2566/ss-local     
+--------+------------+----------------------------------+
 
|     1 | Admin     | 5fce1b3e34b520afeffb37ce08c7cd66 |
 
  
 +
tcp6      0      0 :::21                  :::*                    LISTEN      696/vsftpd         
 +
tcp6      0      0 :::22                  :::*                    LISTEN      741/sshd           
 +
evan@latop:~/rpm/centos7/nginx/SPECS$ sudo netstat  -nlpt | awk '{print $NF}'
 +
servers)
 +
name
 +
939/mysqld
 +
741/sshd
 +
2566/ss-local
 +
696/vsftpd
 +
741/sshd
  
#如果为zabbix 3.0  直接这样就行了
 
update users set passwd=MD5('12345') where userid=1;
 
 
 
#zabbix 2.x
 
重新开个终端,生成一个MD5加密的密码,这里密码设置的是redhat
 
 
[root@localhost ~]# echo -n 12345678 |openssl md5 #-n就表示不输入回车符,不加-n,否则就不是这个结果了。
 
(stdin)= 25d55ad283aa400af464c76d713c07ad
 
 
接着上面的为admin用户设定一个密码
 
 
mysql> update users set passwd='25d55ad283aa400af464c76d713c07ad' where userid = '1';
 
#或者直接使用update users set passwd=md5(“12345678”) where userid=’1′;
 
Query OK, 1 row affected (0.01 sec)
 
Rows matched: 1 Changed: 1 Warnings: 0
 
 
mysql> flush privileges;
 
Query OK, 0 rows affected (0.01 sec)
 
 
mysql> quit
 
Bye
 
 
zabbix登陆账户admin密码修改
 
http://pvbutler.blog.51cto.com/7662323/1734003
 
 
yum install ntp ntpdate -y
 
chkconfig ntpd on
 
/etc/init.d/ntpd start
 
 
*/30 * * * * /usr/sbin/ntpdate pool.ntp.org
 
 
在29行这后添加
 
sed -i ’29a user=mysql’ /etc/my.cnf
 
sed -i ’29a character-set-server=utf8′ /etc/my.cnf
 
sed -i ’29ainnodb_file_per_table=1′ /etc/my.cnf
 
重启mysqld</pre>
 
 
===防火墙设置 ===
 
<pre>这个要看一下先,尽量用严格些的防火墙设置
 
 
#on zabbix-agent
 
 
iptables -A INPUT -s zabbixserverip  -p tcp -m tcp --dport 10050 -m comment --comment "zabbix_server listen " -j ACCEPT
 
#iptables -A INPUT -s zabbixserverip  -p tcp -m tcp --dport 10050 -m comment --comment "zabbix_agentd listen " -j ACCEPT
 
 
#这下面的防火墙rule 不要用
 
vi /etc/sysconfig/iptables
 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 22 -j ACCEPT
 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 10050 -j ACCEPT
 
-A INPUT -m state –state NEW -m tcp -p tcp –dport 10051 -j ACCEPT
 
 
/etc/init.d/iptables restart
 
 
中文在右上角的用户里面哦
 
 
Starting php_fpm /usr/local/php/bin/php-cgi: error while loading shared libraries: libiconv.so.2: cannot open shared object file: No such file or directory
 
failed
 
 
by default install the daemon binaries (zabbix_server, zabbix_agentd, zabbix_proxy) in /usr/local/sbin and the client binaries (zabbix_get, zabbix_sender) in /usr/local/bin.</pre>
 
 
===4.0图像显示字体乱码的解决方法===
 
<pre>
 
 
#传输字体
 
cp  /root/STKAITI.TTF  /usr/share/zabbix/assets/fonts
 
 
 
#修改 指定的字体 或者直接把你的家体改成和默认同名,而默认的那个先删除 连重启都不用 反正在docker
 
  grep  -rn  BX_GRAPH_FONT_NAM  /usr/share/zabbix/include/defines.inc.php
 
67:define('ZBX_GRAPH_FONT_NAME', 'DejaVuSans'); // font file name
 
 
修改
 
define('ZBX_GRAPH_FONT_NAME',          'simkai'); 
 
</pre>
 
===zabbix-get===
 
<pre>
 
root@zabbix-server ~]#zabbix_get  -s 10.3.10.139 -k "system.hostname"
 
dev-hello-market
 
 
 
不过使用zabbix_get时必须开启客户端被动模式,要求暴露客户端监听端口。
 
 
</pre>
 
</pre>
[https://blog.csdn.net/cx55887/article/details/83818696 自动化监控--zabbix-get安装使用详解]
 
 
==第二 agent==
 
<pre>
 
#4.0 #centos7 快速安装和自动配置 2019年 8月23日 星期五 11时45分01秒 CST
 
 
#国外
 
rpm -ivh http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
 
 
#国内
 
https://mirrors.aliyun.com/zabbix/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
 
 
yum install zabbix-agent -y
 
 
yum install ntp  -y
 
timedatectl set-ntp true
 
 
HOSTNAME=prod-java-02
 
 
#config
 
sed -i "s/^Server=127.0.0.1/Server=172.16.1.9/ " /etc/zabbix/zabbix_agentd.conf
 
 
sed -i "s/^ServerActive=127.0.0.1/ServerActive=172.16.1.9/"  /etc/zabbix/zabbix_agentd.conf
 
sed  -i "s/^Hostname=Zabbix server/Hostname=test-market/"  /etc/zabbix/zabbix_agentd.conf
 
 
 
 
#这个用了HOSTNAME 变量  而上面的要指定hostname
 
sed  -i 's/127.0.0.1/23.67.81.95/g'  /etc/zabbix/zabbix_agentd.conf
 
sed  -i "s/Hostname=Zabbix server/Hostname=${HOSTNAME}/g"  /etc/zabbix/zabbix_agentd.conf
 
grep "^\s*[^# \t].*$" /etc/zabbix/zabbix_agentd.conf
 
 
systemctl  enable  zabbix-agent.service
 
systemctl restart zabbix-agent
 
 
 
下面是老的信息 和解说
 
 
cat /etc/zabbix/zabbix_agentd.conf
 
Hostname=主机名
 
Server=zabbix server ip
 
LogFile= 可以不改
 
 
##最好这样3个
 
Server=10.6.1.181
 
ServerActive=10.6.1.181
 
Hostname=zabbix-client-1
 
 
 
#rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/6/x86_64/zabbix-release-3.0-1.el6.noarch.rpm
 
#rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/6/x86_64/zabbix-release-2.2-1.el6.noarch.rpm
 
#http://repo.zabbix.com/zabbix/2.0/rhel/5/x86_64/zabbix-release-2.0-1.el5.noarch.rpm
 
 
 
rpm -ivh http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
 
 
</pre>
 
===agent on debian===
 
<pre>
 
#用系统的源
 
apt-get install zabbix-agent
 
 
 
#config 其实和yum的也一样 只是启动不一样而已
 
HOSTNAME=wiki
 
sed -i "s/^Server=127.0.0.1/Server=207.148.106.229/ " /etc/zabbix/zabbix_agentd.conf
 
 
sed -i "s/^ServerActive=127.0.0.1/ServerActive=207.148.106.229/"  /etc/zabbix/zabbix_agentd.conf
 
sed  -i "s/^Hostname=Zabbix server/Hostname=wiki/"  /etc/zabbix/zabbix_agentd.conf
 
 
grep "^\s*[^# \t].*$" /etc/zabbix/zabbix_agentd.conf
 
 
service zabbix-agent start
 
 
 
zabbix_get -s 138.68.59.0 -k "system.hostname"
 
 
 
#用zbx的源
 
  https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-3+buster_all.deb       
 
dpkg -i zabbix-release_stretch_all.deb
 
# apt-get update
 
</pre>
 
https://www.zabbix.com/documentation/3.2/manual/installation/install_from_packages/repository_installation
 
 
https://www.zabbix.com/documentation/4.0/zh/manual/installation/install_from_packages/rhel_centos#%E5%AE%89%E8%A3%85_agent
 
 
==docker zabbix==
 
 
[https://juejin.im/entry/57be598d0a2b58006cd17c0f 用 Zabbix 和 Docker 搭建监控平台]
 
 
== 故障及回顾==
 
<pre>
 
问题1.  zabbix server 没有打开 10051端口 前端图形没显示
 
 
版本zabbix 2.2
 
 
 
 
没有看到 10051 是因为 
 
 
DBPassword=‘123’ 改为 DBPassword=123
 
 
 
日志查看
 
tail  /tmp/zabbix_server.log
 
 
14659:20170525:171042.257 [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: YES)
 
 
 
正确如下
 
[root@ zabbix]# netstat  -nlpt
 
Active Internet connections (only servers)
 
Proto Recv-Q Send-Q Local Address              Foreign Address            State      PID/Program name 
 
tcp        0      0 0.0.0.0:10051
 
</pre>
 
 
==参考==
 
 
[https://www.howtoforge.com/tutorial/install-zabbix-monitoring-server-and-agent-on-debian-9/ Install Zabbix Monitoring Server and Agent on Debian]
 
  
  
[http://blog.51cto.com/guoxh/2089204 Zabbix 3.0 详解:从添加主机到发送报警通知]
 
  
[https://my.oschina.net/zhouyuntai/blog/1788830 Zabbix监控系统 (3) 之 添加自定义监控项目、配置邮件告警、测试告警]
+
cat b | awk NR%2==1 #单数行
 +
=see also=
 +
[http://blog.linuxchina.net/?p=1467 awk中的NR和FNR的区别]
  
http://blog.linuxchina.net/?p=1711
+
[https://blog.csdn.net/stpeace/article/details/46848873 awk基本用法简介]
  
[https://www.cnblogs.com/enjoycode/p/zabbix_3_installation_on_centos_7.html  Zabbix 3.0  with apache安装笔记]
+
[https://blog.csdn.net/david_xtd/article/details/25888907 awk取最后一列]
  
[https://www.cnblogs.com/zhenglisai/p/6547402.html 【zabbix】自定义监控项key值]
+
[https://blog.csdn.net/liuxiao723846/article/details/55003749?utm_source=blogxgwz8 awk:打印某列以后的所有列]
  
 +
[https://blog.csdn.net/aywb1314/article/details/52239281 使用awk命令获取文本的某一行,某一列]
  
[https://blog.csdn.net/zhengchaooo/article/details/79499991 zabbix添加自定义py脚本]
 
  
 [[category:zabbix]]
+
[[category:shell]]

2019年12月27日 (五) 08:42的版本

awk 打印最后一列

容易混淆的两个变量:NF和$NF两个变量
NF是处理行中域的个数
$NF 是输出处理行中最后一个域的内容
$1 处理行中第一个域的内容 ,依此类推

 sudo netstat  -nlpt 

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      939/mysqld          

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      741/sshd            
tcp        0      0 127.0.0.1:7070          0.0.0.0:*               LISTEN      2566/ss-local       

tcp6       0      0 :::21                   :::*                    LISTEN      696/vsftpd          
tcp6       0      0 :::22                   :::*                    LISTEN      741/sshd            
evan@latop:~/rpm/centos7/nginx/SPECS$ sudo netstat  -nlpt | awk '{print $NF}' 
servers)
name
939/mysqld
741/sshd
2566/ss-local
696/vsftpd
741/sshd


cat b | awk NR%2==1 #单数行

see also

awk中的NR和FNR的区别

awk基本用法简介

awk取最后一列

awk:打印某列以后的所有列

使用awk命令获取文本的某一行,某一列