1 zabbix
在拜读《树莓派学习指南(基于Linux).pdf》、《树莓派(Raspberry+Pi)实战指南++手把手教你掌握100个精彩案例》等人的著作,都提到了一个问题,就是树莓派容易烧坏。于是就想着在使用前,是不是把监控给做好。
比如安装pandas的时候,卡在这里了,查看CPU使用100%,执行/opt/vc/bin/vcgencmd measure_temp
,此是温度为temp=59.1'C
,这个时候安装程序跟死掉一样了。
python写的树莓派实时监控温度,cpu使用率的小程序,但这个不能做实际运营环境
1.1 安装mysql
MySQL安装之yum安装,按照此文章安装mysql
wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql57-community-release-el7-10.noarch.rpm
yum -y install mysql-community-server
systemctl start mysqld.service
systemctl status mysqld.service
我安装后root用户,密码是为空的,所以跟上面的链接有所不同,按照mysql如何修改root用户的密码,修改root用户的密码
mysql -uroot -p
use mysql;
update user set password=password('123') where user='root' and host='localhost';
flush privileges;
1.2 安装zabbix server
按照zabbix官网中,根据操作系统,执行
rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-1.el7.noarch.rpm
yum clean all
yum -y install zabbix-server-mysql zabbix-web-mysql zabbix-agent
# 创建zabbix数据库
mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> quit;
# 导入初始数据
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
# 为Zabbix server配置数据库,填入zabbix用户的密码
vi /etc/zabbix/zabbix_server.conf
DBPassword=password
为Zabbix前端配置PHP
vi /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
# 启动Zabbix server和agent进程
systemctl restart zabbix-server zabbix-agent httpd
systemctl enable zabbix-server zabbix-agent httpd
连接到新安装的Zabbix前端: http://server_ip_or_name/zabbix,登录用户名为:Admin,密码为:zabbix
1.3 树莓派zabbix agent
wget https://repo.zabbix.com/zabbix/4.0/debian/pool/main/z/zabbix-release/zabbix-release_4.0-2+stretch_all.deb
dpkg -i zabbix-release_4.0-2+stretch_all.deb
apt update
apt -y install zabbix-agent
# 启动zabbix-agent
service zabbix-agent start
ubuntu下面zabbix agent配置文件在/usr/share/zabbix-agent
目录下,/etc/zabbix
目录下面也需要修改
Assuming that agent dropped connection because of access permission
1.4 自定义监控
树莓派的温度是可以通过命令读取的,那么是不是可以通过脚本将其监控起来呢?
vim /zabbix/etc/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=get_temp,/usr/bin/python /application/monitor/os_info.py
# 如果是root用户启动则需要设置
AllowRoot=1
# 如果是zabbix用户,则需要对zabbix用户设置脚本执行权限
在zabbixserver可以验证agent是否生效
./zabbix_get -s 10.101.5.136 -p 10050 -k "get_temp"
2 日志
执行爬虫的时候,out日志逐渐增加,可以SD卡的空间有限,势必需要做定时清理工作。
nohup scrapy runspider test_spider.py >> /home/pi/logs/spiders/test_spider.out &
执行cron status
,提示错误信息
cron: can't lock /var/run/crond.pid, otherpid may be 292: Resource temporarily unavailable
unbutu can’t lock /var/run/crond.pid,可是我是树莓派,没法执行。cron can’t lock /var/run/crond.pid ,这篇文章说执行rm -rf /var/run/cron.pid
后,需要重启系统,可是真的需要重启系统吗。我只是加了个定时任务,就得重启树莓派?还不如自己用python写定时任务,就不用cron了。
3 swap设置
默认情况swap是没有设置
通过zabbix监控出现Lack of free swap space
的警告,执行pip install pandas
的时候基本卡死了
那么如何设置swap呢?通过linux(centos 7)显示系统内存状态free命令用法中的计算公式
# 应用程序
可用内存=free+buff/cache=772+96=868M
total=used+free+buff/cache=36+772+96≈905
再看看修改树莓派交换分区 SWAP 的正确姿势,Swap分区是当物理内存不够用的时候,把物理内存的一部分空间释放出来,以供当前的程序使用,释放出来的空间被临时保存在swap分区中,文章给出一个原则一般在内存小于2G的情况下,交换分区应为内存的2倍