zabbix自定义监控、钉钉、邮箱报警

news2024/11/17 6:30:48

目录

一、实验准备

二、安装

三、添加监控对象

四、添加自定义监控项

五、监控mariadb

1、添加模版查看要求

2、安装mariadb、创建用户

3、创建用户文件

4、修改监控模版

5、在上述文件中配置路径

6、重启zabbix-agent验证

六、监控NGINX

1、安装NGINX,开启status模块

2、编写脚本、设置key并验证

3、添加自定义监控项

七、钉钉报警设置

1、创建群组、添加机器人

2、配置zabbix server

3、web端设置

4、测试报警效果

八、邮件报警

1、在zabbix-server 上配置邮件服务器

2、编辑 zabbix_server.conf 引用邮件脚本

3、配置 zabbix web 监控项邮件报警

4、测试


一、实验准备

192.168.115.148 zabbix-server

192.168.115.151 zabbix-angent

rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-server-mysql zabbix-agent
yum install centos-release-scl
vim /etc/yum.repos.d/zabbix.repo
####改这里
[zabbix-frontend]
...
enabled=1
...

yum install zabbix-web-mysql-scl zabbix-apache-conf-scl

yum -y install mariadb mariadb-server
systemctl start mariadb.service 
##进入MYSQL
mysql
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user "zabbix"@"localhost" identified by '123456';
mysql> grant all privileges on zabbix.* to "zabbix"@"localhost";
mysql> quit;

zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix

yum install zabbix-get


vim /etc/zabbix/zabbix_server.conf
##修改密码
DBPassword=123456
DBHost=192.168.115.118


vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai



systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum install zabbix-agent

##117行 
Server=192.168.115.148
##163行 
ServerActive=192.168.115.148
##174行 
Hostname=192.168.115.151

systemctl start zabbix-agent
systemctl enable zabbix-agent


二、安装

访问192.168.115.148/zabbix

三、添加监控对象

同理添加192.168.115.151

四、添加自定义监控项

在192.168.115.151上添加自定义的监控项:监控当前登录用户的个数
 

vim /etc/zabbix/zabbix_agentd.d/user-login.conf
########定义键
########格式:UserParameter=key,shell命令(脚本也可)
UserParameter=user_login,who|wc -l


vim /etc/zabbix/zabbix_agentd.conf
###解开注释,启用
UnsafeUserParameters=1

systemctl restart zabbix-agent

在web端添加自定义监控项

验证,使用ssh登录192.168.115.151,让登录用户大于3

五、监控mariadb

1、添加模版查看要求

在192.168.115.151上先

查看说明

Requirements for template operation:
1.Install Zabbix agent and MySQL client.
2.Copy template_db_mysql.conf into folder with Zabbix agent configuration (/etc/zabbix/zabbix_agentd.d/ by default). Don't forget to restart zabbix-agent. 
3.Create MySQL user for monitoring. For example:
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '<password>';
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zbx_monitor'@'%';
For more information read the MySQL documentation https://dev.mysql.com/doc/refman/8.0/en/grant.html , please. 
4.Create .my.cnf in home directory of Zabbix agent for Linux (/var/lib/zabbix by default) or my.cnf in c:\ for Windows. For example:
[client]
user='zbx_monitor'
password='<password>'


You can discuss this template or leave feedback on our forum https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/384189-discussion-thread-for-official-zabbix-template-db-mysql

Template tooling version used: 0.39


#########################################################################################
模板操作的要求如下:

根据提供的信息,模板操作的要求包括:

安装Zabbix agent和MySQL客户端。

将template_db_mysql.conf复制到Zabbix agent配置文件夹中(默认为/etc/zabbix/zabbix_agentd.d/)。不要忘记重新启动zabbix-agent。

为监控创建MySQL用户。例如:
CREATE USER 'zbx_monitor'@'%' IDENTIFIED BY '';
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON . TO 'zbx_monitor'@'%';
更多信息请阅读MySQL文档 https://dev.mysql.com/doc/refman/8.0/en/grant.html。

在Linux的Zabbix agent主目录(默认为/var/lib/zabbix)中创建.my.cnf文件,或在Windows的c:\目录中创建my.cnf文件。例如:
[client]
user='zbx_monitor'
password=''

您可以在我们的论坛上讨论此模板或提供反馈意见 https://www.zabbix.com/forum/zabbix-suggestions-and-feedback/384189-discussion-thread-for-official-zabbix-template-db-mysql

使用的模板工具版本为0.39
2、安装mariadb、创建用户
###安装、启动
yum -y install mariadb-server
systemctl start mariadb
#######创建用户
CREATE USER 'zabbix'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON . TO 'zabbix'@'%';
3、创建用户文件
vim /etc/zabbix/.my.cnf


[client]
user='zabbix'
password='123456'
 # #####################
4、修改监控模版
 cd /etc/zabbix/zabbix_agentd.d
 cp /usr/share/doc/zabbix-agent-5.0.37/userparameter_mysql.conf .

就是这家伙

5、在上述文件中配置路径
#替换
:%s/,/,HOME=\/etc\/zabbix\//g

6、重启zabbix-agent验证

systemctl restart zabbix-agent

六、监控NGINX

1、安装NGINX,开启status模块
yum -y install epel-release
yum -y install nginx
systemctl start nginx
nginx -V #查看模块

vim /etc/nginx/nginx.conf
###server或者location下插入
location / {
}
location /status {                   #定义运行状态页面名称,页面为status
        stub_status on;              #开启模块
        access_log off;              #不开启访问日志记录
        allow 192.168.115.0/24;      #允许此网段的主机访问此网页
        deny all;                    #其余网段主机不允许访问
 }



##重启
systemctl restart nginx

验证此模块

curl 192.168.115.151/status

Active connections: 1 
- 这表示当前服务器上有1个活跃连接。

Server accepts handled requests: 2 2 2
- 这个部分显示了服务器已经接受和处理的请求数目。具体来说,服务器已经接受了2个请求,并成功处理了这2个请求。

Reading: 0 Writing: 1 Waiting: 0
- 这个部分显示了服务器当前的连接状态。其中,Reading表示正在读取的连接数目为0,Writing表示正在写入的连接数目为1,Waiting表示等待的连接数目为0。
2、编写脚本、设置key并验证

参考大佬Zabbix5.0之监控Nginx_zabbix监控nginx失败请求_傻笑zz的博客-CSDN博客

vim /etc/zabbix/script/ngx_status.sh
#!/bin/bash
#定义Nginx status页面
ngx_status="192.168.115.151/status"

#判断status页面是否存活
ngx_status_code() {
        http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`
        if [ ${http_code} == "200" ];then
                return 1
        else
                echo "Nginx status is not running."
        fi
}

#获取当前活动的客户端连接数
active() {
        ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
}

#获取接收客户端连接的总数量
accepts() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
}

#获取已处理的连接总数量
handled() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
}

#获取客户端请求总数量
requests() {
        ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
}

#获取正在读取请求标头的当前连接数量
reading() {
        ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
}

#获取正在将响应写回到客户端的当前连接数量
writing() {
        ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
}

#获取当前正在等待响应的客户端连接数量
waiting() {
        ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
}

#使用位置变量控制脚本输出
case $1 in
        active)
                active;;
        accepts)
                accepts;;
        handled)
                handled;;
        requests)
                requests;;
        reading)
                reading;;
        writing)
                writing;;
        waiting)
                waiting;;
        *)
                echo "Unknown options"
esac
配置Zabbix Agent

vim /etc/zabbix/zabbix_agentd.conf

PidFile=/var/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
DenyKey=system.run[*]
EnableRemoteCommands=1
Server=10.1.1.1
ServerActive=10.1.1.1
Hostname=nginx
Timeout=10
Include=/etc/zabbix/zabbix_agentd.d/*.conf
UnsafeUserParameters=1

创建自定义监控项
 vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

UserParameter=nginx.active,bash /etc/zabbix/script/ngx_status.sh active
UserParameter=nginx.accepts,bash /etc/zabbix/script/ngx_status.sh accepts
UserParameter=nginx.handled,bash /etc/zabbix/script/ngx_status.sh handled
UserParameter=nginx.requests,bash /etc/zabbix/script/ngx_status.sh requests
UserParameter=nginx.reading,bash /etc/zabbix/script/ngx_status.sh reading
UserParameter=nginx.writing,bash /etc/zabbix/script/ngx_status.sh writing
UserParameter=nginx.waiting,bash /etc/zabbix/script/ngx_status.sh waiting

重启zabbix-agent

systemctl start zabbix-agent

数值获取测试

 zabbix_get -s 192.168.115.151 -k nginx.active

 zabbix_get -s 192.168.115.151 -k nginx.reading

####取到数值说明正确

3、添加自定义监控项

创建图形化

七、钉钉报警设置

下载钉钉

参考Zabbix 5.0实现钉钉报警_zabbix5.0设置钉钉告警_杭州吉网运维日记的博客-CSDN博客

1、创建群组、添加机器人

2、配置zabbix server

vim /etc/zabbix/zabbix_server.conf 
###523行解开注释
AlertScriptsPath=/usr/lib/zabbix/alertscripts


###进入到/usr/lib/zabbix/alertscripts路径下创建脚本
cd /usr/lib/zabbix/alertscripts
vim dingding.py

#!/usr/bin/env python
#coding:utf-8
#zabbix钉钉报警
import requests,json,sys,os,datetime
webhook="https://oapi.dingtalk.com/robot/send?access_token=3a7191b12c8e8f5580b9bedc9e48938421845e7629c8ff0fe2833f1ede9e8b30" (修改为自己的webhook)
user=sys.argv[1]
text=sys.argv[3]
data={
    "msgtype": "text",
    "text": {
        "content": text
    },
    "at": {
        "atMobiles": [
            user
        ],
        "isAtAll": False
    }
}
headers = {'Content-Type': 'application/json'}
x=requests.post(url=webhook,data=json.dumps(data),headers=headers)
if os.path.exists("/var/log/zabbix/dingding.log"):
    f=open("/var/log/zabbix/dingding.log","a+")
else:
    f=open("/var/log/zabbix/dingding.log","w+")
f.write("\n"+"--"*30)
if x.json()["errcode"] == 0:
    f.write("\n"+str(datetime.datetime.now())+"    "+str(user)+"    "+"发送成功"+"\n"+str(text))
    f.close()
else:
    f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "发送失败" + "\n" + str(text))
    f.close()
##赋予执行权限
chmod +x dingding.py
##创建日志文件:
touch /var/log/zabbix/dingding.log
chown zabbix.zabbix /var/log/zabbix/dingding.log

#####安装python与请求模块
yum -y install python-requests python 

#####报警测试,要写三个参数并且带关键字"告警"
./dingding.py this is  "告警测试,请注意"

3、web端设置

创建媒介

添加动作

Problem: {EVENT.NAME}



-=【告警】=-
告警组:{TRIGGER.HOSTGROUP.NAME}
告警主机:{HOSTNAME1} 
告警主机别名:{HOST.NAME}
主机IP:{HOST.IP}
主机描述:{HOST.DESCRIPTION}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
警报类别:{TRIGGER.NAME}
当前状态:{ITEM.LASTVALUE}
告警平台:http://192.168.115.151/zabbix

告警恢复

Resolved:{EVENT.NAME}


-=【告警取消啦】=-
恢复主机:{HOSTNAME1}

恢复时间:{EVENT.DATE} {EVENT.TIME}

主机IP:{HOST.IP}

告警项目:{TRIGGER.KEY1}

问题详情:{ITEM.NAME}:{ITEM.VALUE}

当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}

事件ID:{EVENT.ID}

配置报警媒介

4、测试报警效果

停掉192.168.115.151的NGINX

启动NGINX

八、邮件报警

登录163邮箱

授权码要好好保存

1、在zabbix-server 上配置邮件服务器
##安装邮件服务器,转义
yum install -y mailx dos2unix
##查看版本
[root@localhost alertscripts]# mail -V
12.5 7/5/10



#####修改配置文件
vim /etc/mail.rc
//在此文件末尾添加,指定接收邮件邮箱地址,指定邮箱服务器地址,指定接收邮件邮箱地址的授权码,并非 163 邮箱的密码,而是授权码,登陆 163 网易邮箱地址后,--设置--开启smtp 和 pop3--点击客户端生成授权码--使用此授权码进行指定到此配置文件

set from=mslinux@163.com smtp=smtp.163.com
set smtp-auth-user=mslinux@163.com smtp-auth-password=上面生成的授权码
set smtp-auth=login


####发送测试邮件
echo "test mail from zabbix.server.com"| mail -s "test mail" 17306969189@163.com

来到邮箱查看

2、编辑 zabbix_server.conf 引用邮件脚本
vim /etc/zabbix/zabbix_server.conf
查看得到路径 AlertScriptsPath=/usr/lib/zabbix/alertscripts


###写脚本
cd /usr/lib/zabbix/alertscripts
vim mail.sh


##编写报警邮件脚本,调整 mail 命令语法位置,使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内容而出现 ATTO0001.bin 的错误;
#!/bin/bash
#export.UTF-8
bt=$2
sjr=$1
FILE=/tmp/mailtmp.txt
echo "$3" >$FILE
/usr/bin/dos2unix -k $FILE
/bin/mail -s "$bt" "$sjr" <$FILE
#########################################
bt=$2 sjr=S1  定义发件标题和收件人信息
FILE=/tmp/mailtmp.txt  定义文件路径
使用 dos2unix 命令转换字符,避免收到邮件不显示正常邮件内
/usr/bin/dos2unix -k SFILE  容而出现 ATTO0001.bin 的错误
/bin/mail -s "Sbt""Ssjr" <SFILE   执行邮件发送命令

##############################
 chmod 777 mail.sh
chown zabbix:zabbix mail.sh
touch /tmp/mailtmp.txt
chmod 777 /tmp/mailtmp.txt
chown zabbix:zabbix /tmp/mailtmp.txt
####测试脚本
./mail.sh mslinux@163.com "test mail2" "test mail from server.zabbix.com test2"

3、配置 zabbix web 监控项邮件报警

监控--创建报警媒介类型--更新用户使用的报警媒介类型-创建动作(根据发器触发)--验证;

创建动作

邮件主题:

故障:{TRIGGER.STATUS},服务器:{HOSTNAME1},发生:{TRIGGER.NAME}故障!

邮件消息:

告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE}{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}

4、测试

停掉NGINX服务

启动NGINX服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1032961.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

抖音seo源码关键词霸屏搜索

抖音seo源码mvg框架依据关键词霸屏搜索引擎机制技术代开发&#xff0c;抖音seo优化系统&#xff0c;抖音seo优化系统最终也是类比百度seo关键词霸屏搜索引擎来搭建&#xff0c;从短视频ai创意制作&#xff0c;发布&#xff0c;多账号平台管理。 1&#xff1a;抖音SEO霸屏系统的…

在对bbox 进行坐标系转换时heading的处理--使用向量的旋转

实际做题中我们可能会遇到很多有关及计算几何的问题&#xff0c;其中有一类问题就是向量的旋转问题&#xff0c;下面我们来具体探讨一下有关旋转的问题。 首先我们先把问题简化一下&#xff0c;我们先研究一个点绕另一个点旋转一定角度的问题。已知A点坐标(x1,y1)&#xff0c;…

打开常用软件出现msvcp140.dll丢失的解决方法,msvcp140.dll是什么东西?

在我们使用计算机的过程中&#xff0c;有时候会遇到一些错误提示&#xff0c;其中“找不到 msvcp140.dll”就是比较常见的一种。那么&#xff0c;msvcp140.dll 到底是什么呢&#xff1f;为什么会出现找不到的情况&#xff1f;丢失 msvcp140.dll 又会对计算机产生什么影响&#…

Flask配合Echarts写一个动态可视化大屏

ch 技术 后端&#xff1a;flask 可视化&#xff1a;echarts 前端&#xff1a;HTMLJavaScriptcss 大屏布局 大屏拆分 案例项目中大屏可按版块进行拆解&#xff0c;会发现这里大屏主要由标题、折线图、柱状图、地图、滚动图和词云等组成&#xff0c;整体可切分为8个版块&…

RK358支持全链路ECC的DDR和普通内存有何区别?

ECC内存&#xff08;ErrorCorrection Code Memory&#xff09;和普通内存是计算机存储技术中常见的两种类型的内存。它们在设计和功能上有一些重要区别。接下来我们将详细解释ECC内存和普通内存&#xff0c;并列举它们之间的区别以及ECC内存的纠错原理。 普通内存通常被称为非E…

MQ - 16 集群篇_分布式集群的数据一致性方案

文章目录 导图Pre分区、副本和数据倾斜副本间数据同步方式同步复制异步复制CAP 和一致性模型集群数据一致性和可靠性实现ZooKeeper 数据一致性和可靠性Kafka 数据一致性和可靠性Pulsar 数据一致性和可靠性总结导图 Pre MQ - 14 集群篇_如何构建分布式的消息队列集群&#

FOXBORO FBM233 P0926GX控制脉冲模块

FOXBORO FBM233 P0926GX 是一种控制脉冲模块&#xff0c;通常用于工业自动化和控制系统中。这个模块的主要功能是生成和控制脉冲信号&#xff0c;以用于执行特定的操作或控制过程。以下是可能适用于 FOXBORO FBM233 P0926GX 控制脉冲模块的一些常见特点&#xff1a; 脉冲生成&a…

【力扣-每日一题】213. 打家劫舍 II

class Solution { public:int getMax(int n,vector<int> &nums){int a0,bnums[n],c0;for(int in1;i<nums.size()n-1;i){ //sizen-1,为0时&#xff0c;第一个可以偷&#xff0c;最后一个不能偷size-1&#xff1b;n为1时&#xff0c;最后一个可偷&#xff0c;计算…

【00】FISCO BCOS区块链简介

官方文档&#xff1a;https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/introduction.html FISCO BCOS是由国内企业主导研发、对外开源、安全可控的企业级金融联盟链底层平台&#xff0c;由金链盟开源工作组协作打造&#xff0c;并于2017年正式对外开源。 F…

Java基于SpringBoot的会员制医疗预约服务系统,可作为毕业设计

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈 3系统分析3.1需求分析 4系统总体设计4.1系统结构4.2数据库设计4.2.1 数据库概念…

浙江大学2024年研招简章总纲领公布:MBAMPAMEM报考划重点版

2024年研究生招生录取工作终于走到关键的一步&#xff0c;9月24-27日考研网上预报名时间段开启前&#xff0c;浙大公布2024年研究生招生简章总纲领&#xff0c;立足浙江的杭州达立易考教育带领大家一睹为快&#xff0c;特别为MBA/MPA/MEM等管理类硕士考生划重点&#xff01; 一…

使用React-Query解决接口请求

使用React-Query解决接口请求 前言 如果你平常会写前后端交互的react页面&#xff0c;那你一定写过这样的代码. function App() {const [data, updateData] useState(null);const [isError, setError] useState(false);const [isLoading, setLoading] useState(false);us…

VS2019的SDL2项目配置

库下载 Simple DirectMedia Layer - Homepage 对于Windows下使用VS2019开发的选手&#xff0c;应该直接选VC后缀了。 VS目录配置 首先VS2019创建一个空项目&#xff0c;新加入一个源文件&#xff0c;代码如下&#xff1a; /*This source code copyrighted by Lazy Foo Produ…

【C语言】字符函数和字符串函数(含模拟)

前言&#xff1a; 在做OJ题或阅读代码时或多或少会遇到一些字符函数和字符串函数&#xff0c; 如果不认识或不熟悉就会造成不便&#xff0c; 本篇文章主要是为了这方面而存在&#xff0c; 此篇介绍各个字符串的功能与使用方法&#xff0c; 下一篇会讲解如何模拟这些函数 重点&a…

【亲测有效】3步实现 微信小程序内接入小程序客服,网页端客服工具与移动端小程序客服工具使用方法,使用入口,并设置当前客服状态

背景&#xff1a;多数服务类小程序内回存在微信在线客服功能 微信小程序内接入小程序客服 第一步登录“微信公众平台”点击“客服”功能&#xff0c;并设置微信客服 第二步登录在小程序所需客服的位置插入以下代码 <button open-type"contact" bindcontact"…

通过410s读取电表数据并接入物联网平台

通过410s读取电表数据并接入物联网平台 设备接线准备设备调试代码实现Modbus TCP Client 读取电表数据读取寄存器数据转成32bit Float格式然后使用modbusTCP Client 读取数据 使用mqtt协议接入物联网平台最终代码实现 设备接线准备 设备调试 代码实现 Modbus TCP Client 读取…

【PLC GX Works2】创建一个工程

PLC GX Works2软件安装 https://www.jcpeixun.com/software/375 程序编写 1、工程中找到新建 2、新建 3、导航栏中选择第三行第一个&#xff0c;是全局软元件注释 4、修改软元件名x0为点动按钮&#xff0c;y1为电机&#xff0c;之后关闭即可。 5、左母线&#xff0c;右…

精彩回放|Fortinet保障联网车辆全生命周期信息安全

随着AI、云计算、物联网等技术的不断发展&#xff0c;汽车行业正在经历深刻的变革。然而&#xff0c;这种变革不仅带来了前所未有的机遇&#xff0c;也带来了许多挑战&#xff0c;其中最突出的是信息安全问题。在为期五期的垂直行业网络安全案例讲座的第一期“汽车行业网络安全…

好用的记笔记app选哪个?

当你在日常生活中突然获得了一个灵感&#xff0c;或者需要记录会议的重要内容&#xff0c;或者是学校课堂上的笔记&#xff0c;你通常会拿出手机&#xff0c;因为它总是在你身边&#xff0c;随时可用。这时候&#xff0c;一款好的记笔记App可以让你事半功倍。 敬业签是一款全面…

【在Ubuntu部署Docker项目】— PROJECT#1

一、说明 让我们深入了解 Docker。用docker构建web服务器。我们正在计划开发JavaScript API&#xff0c;建立MySQL数据库&#xff0c;并创建一个 PHP 网站使用 API 服务。Php Node.js Mysql — DockerSeries — Episode#1 二、系统架构概述 我们要构建的容器&#xff0c;是三…