# Real-time log monitoring **Repository Path**: gccai/real-time-log-monitoring ## Basic Information - **Project Name**: Real-time log monitoring - **Description**: 通过实时日志监控这个系统学习golang的并发和websocket。 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-07-22 - **Last Updated**: 2025-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README > 使用的技术 应该学到的知识: 1. 并发编程的基础知识 2. golang面向对象 3. 并发编程的思路 ## 常见的并发模型 解决c10k问题,大致意思就是同时处理10k个请求。 为了解决这个问题,出现了异步非阻塞(Nginx, Libevent, Nodejs) 为了降低时间复杂度,出现了协程。 1. 程序并发执行(goriutine) 2. 多个goroutine间的数据同步和通信(channels) 3. 多个channel选择数据读取或者写入(select) *过个goroutine中传递数据*: 下面这个例子就是在一个goroutine中将数据传递给主goroutine中。 利用channels进行通讯 ```go c := make(chan string) go func(){ time.Sleep(1*time.Second) c <- "message from closure" }() msg := <- c ``` select: ```go select{ case v := <- c1 : fmt.Println("channel 1 sends", v) case v := <- c2: fmt.Println("channel 2 sends", v) default: // 可选 fmt.Println("neither channel was ready") } ``` > 并发和并行 >* 并发:指同一时刻,系统通过调度,来回切换交替的运行多个任务,简单来讲,就是看起来像是一起进行的,但是实际上是交替进行的 >* 并行:指同一时刻,两个任务真的就是在一起执行 ### 使用grafana来绘制监控图--监控面板 > 现在已经安装好grafana了 > 启动命令: > 1. sudo systemctl daemon-reload > 2. sudo systemctl start grafana-server > 3. sudo systemctl status grafana-server 剩余待解决问题: 1. grafana的使用问题 2. influxdb的使用问题,有文档可以看。