监控基础
以下监控系统内容很多都淘汰了,现在大多都用Prometheus了
监控系统介绍规模带来的挑战
每当系统规模扩大10倍,原有的技术栈则需要替代
更多系统、设备、应用的数量,不同的部署地点、不同的业务需求
系统问题不能及时得到反馈,响应处理不及时(被动响应)
设备服务间存在复杂的依赖关系,问题定位困难(这是分层带来的困扰)
网络问题造成应用无法访问
数据库问题造成应用无法访问
资源抢占造成后台进程系统杀掉
来自用户的问题反馈通常存在误导因素
系统缺乏统一的监控告警机制、失控
需要统一的监控系统,能自动告警、问题处理
监控系统介绍可以周期性的检查系统、服务是否可用
日常使用的监控系统
Nagios
Zabbix
Manageengine
Solarwind
监控技术
第一类:基于客户端
适用于通用操作系统,需要在被监视设备上安装监控程序
第二类:基于SNMP协议
普遍使用、硬件设备
私有的协议扩展
nagios介绍Nagios是插件式的结构,它本身没有任何监控功能,所有的监控都是通过插件进行的,因此其是高度模块化和富于弹性的。
nagios是开源的系统监控工具
自动监视系 ...
邮件服务
电子邮件基础电子邮件
快速、便捷、通用、异步的通信方式
1965年最早由MIT发明并开源 (最早用于同主机用户间通信)
1971年确定邮件地址以@符号连接(在不同主机间传递信息)
MIME (Multipurpose Internet Mail Extensions 多用途互联网邮件扩展类型) 类型扩展邮件以纯文本到传递文件(文档、图片、媒体)
邮件可被伪造
传统物理邮件和电子邮件比较传统物理邮件
写信 —-> 到本地邮局 —-> 目的邮局 —-> 收件人
电子邮件
client1 —-> server1 ——> server2 ——client2 ,邮件地址通过DNS解析完成邮件路由
无收件人返回报错(不通知),连不上目标服务器周期重发,直至失败
邮件协议SMTP
Simple Mail Transfer Protocol
MTA(Mail transfer agents)之间通信协议(SMTPD)
由很多个小程序组合实现MTA所以功能
Sendmail、Postfix、Exim、Qmail 等MTA软件包
客户端发邮件 ...
01-聊天服务
聊天服务与IRC服务搭建聊天服务高效的沟通是生产力
为什么不用qq、微信、Telegram
企业信息流经他人服务器
内部信息内部传递效率更高
更专注于公司内部工作内容
IRC
Internet Relay Chat (因特网中继聊天)
出现于1988年(为取代MUT而诞生)
是一种通过网络的群体即时聊天方式(也可以用于个人间聊天)
公共的协议(TCP和SSL协议)
IRC服务器可以连接其他的IRC服务器形成一个IRC网络
大多数的IRC服务器不需要客户登录
目前已经很少见(黑客和老派的技术群体的挚爱)
部分服务商以来IRC协议进行信息传递
Ircd-Hybrid
安装配置简单
系统资源占用低
安装:
1sudo apt install ircd-hybrid
管理员口令(operator)
设置密码:mkpasswd password 会得到密文,然后将密文添加到配置项中
配置123456789101112131415sudo vi /etc/ircd-hybrid/ircd.confserverinfo{ name = 'irc.lab.com ...
01-LAMP
LAMP环境安装WordPressWEB应用程序基础套件
操作系统(linux)
WEB服务器(Apache Nginx)
数据库(MySQL MariaDB PostgreSQL)
应用开发语言(python php perl)
大量开源应用基于LAMP开发
wordpress
wiki
owncloud
phpmyadmin
安装LAMP(Linux + Apache + MySQL + PHP)
手动安装
1234567sudo apt install apache2sudo apt install mysql-serversudo apt install php libapache2-mod-php php-mysql# 测试echo "<?php phpinfo();?>" >> /var/www/html/info.php
自动安装
12345# 首先安装tasksel 它会自动打包安装软件sudo apt install taskselsudo tasksel # 选择想要安装的服务
...
go设计模式
OOP编程基础Go中的类与对象Go中用结构体模拟类与对象
12345678910// Bike 表示一个类型或者说一个OOP类type Bike struct { color string // 首字母小写表示属性私有 Name string // 首字母大小表示属性公有}// 首字母大写表示方法对外公开func (b *Bike) Move() string { return b.color + "的自行车在前进🚲"}
Go中的三大基本特性封装:首字母大小写方式代表公有私有权限
1234567type Person struct { name string}func (p *Person) Eat() { fmt.Println(p.name + "在吃饭")}
继承:使用内嵌的方式,对结构体struct进行组合
12345678910111213141516type Person struct { name str ...
golang面试题
面试一make和new的区别?了解过golang的内存管理吗?调用函数传入结构体时,应该传值还是指针?
线程有几种模型?goroutine的原理了解过吗,讲一下实现和优势?
Goroutine什么时候会发生阻塞?
GMP模型中Goroutine有哪几种状态?线程呢?
每隔线程/协程占用多少内存知道吗?
如果Goroutine一直占用资源怎么办,GPM模型怎么解决这个问题?
如果若干个线程中一个线程OOM,会发生什么?如果是Goroutine呢?项目中遇到过OOM吗,怎么解决的?
项目中错误处理怎么处理?
如果若干个Goroutine,其中一个panic,会发生什么?
defer可以捕获到其Goroutine的子Goroutine的panic吗?
自定义一个error吗?
gRPC,自己封装了一下,利用gRPC gateway提供了http的方式
gRPC gateway怎么做的?社区的gRPC gateway库,通过proto文件添加描述信息,生成http的访问方式
proto文件怎么管理的?monorepo
服务发现怎么做的,也是通过gateway吗?
注册中心挂了怎么办?
开发使用 ...
01-go开发基础
golang基础变量和常量如何定义变量单声明变量var名称类型是声明单个变量的语法
第一种,指定变量类型,声明后若不赋值,使用默认值
12var name stringname ="cwz"
第二种,根据值自行判定变量类型(类型推断Type inference)
如果一个变量有一个初始值,Go将自动能够使用初始值来推断该变量的类型。因此,如果变量具有初始值,则可以省略变量声明中的类型
1var name ="cwz"
第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的(多个变量同时声明时,至少保证一个是新变量),否则会导致编译错误(简短声明)
123var a int = 10var b = 10c := 10
这种方式只能被用在函数体内,而不可以用于全局变量的声明与赋值
12345678package mainvar a = "cwz"var b string = "b"var c boolfunc main(){ println(a, b, c)}
多声 ...
01-数据库管理服务
数据库管理系统数据库介绍
数据是应用的核心
按照结构组织、存储和管理数据的参仓库
可视为电子化的文件柜(增删改查)
数据挖掘透视表象背后的真相
关系型数据库
库、表、字段、记录
SQL
非关系型数据库NoSQL
大数据技术的发展暴露出关系型数据库的问题
存储不同格式的数据类型(文件型数据)
图形数据库、文档数据库、键值对数据库、大表
NoSQL并非取代SQL,而是互补
数据库管理系统
Database Management System (DBMS)
操纵和管理数据库的软件
功能作用
数据定义 , 定义数据结构及完整性机密性约束
数据操作
运行管理,多用户、安全性、存取限制、事务管理、自动恢复
组织与存储 分类管理各种数据
数据保护 恢复、并发控制、完整性、机密性
数据库维护 数据载入、转换、重组重构
通信 OS接口、网络通信
MySQL安装配置1sudo apt install mysql-server
安全配置1sudo mysql_secure_installation
root账号密码登录123456sudo mysqlselect user, ...
05-tomcat
TomcatTomcat是由Apache组织开发的一个servlet容器
实现对servlet、JSP、Java Socket等支持
包含HTTP服务器
作为中间件使用
可与Nginx结合使用
官方库安装1234sudo apt install tomcat8sudo apt install tomcat8-docssudo apt install tomcat8-admin # 提供tomcat的web页面方式安装的方法sudo apt install tomcat8-examples
启动服务之后,浏览器地址栏输入地址:http://172.16.247.128:8080
手动安装123sudo apt install default-jdk # 安装默认的open-jdksudo useradd -m -U -d /opt/tomcat -s /bin/false tomcat # 创建账号,为了安全,本地的shell不能登录
下载安装包:12345wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomc ...
04-keepalived
keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。
通常分布式系统采用主从模式,一个主机连接多个处理节点,主节点负责分发任务,而子节点负责处理业务,当主节点发生故障时,会导致整个系统发故障,我们把这种故障叫做单点故障。
工作原理keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepali ...